sprintf関数は、引数で指定した値を書式に従い、文字列に編集(変換)します。
この関数はprintf関数やfprintf関数と似ていますが、ファイルに出力するのではなく、指定された領域に出力する点が異なります。
#include <stdio.h>
int sprintf(char *str, const char *format, …);
*strは編集した結果を格納するための領域を指定します。
*format(書式)は第3引数以降で指定する値の編集形式を指定します。
第3引数以降は可変引数で、任意の引数を指定できます。ただし、*formatにより、間接的に引数の型名と個数を指定することになります。
戻り値として、正常に出力できた場合は出力した文字数が、エラーの場合は負の値を返します。
*format(書式)はprintf関数やfprintf関数と同じですので、fprintf関数をご覧ください。
プログラム 例
#include <stdio.h> int main(void) { char *StrAdd(int, int); int atai1; int atai2; printf('2つの整数を入力してください ==> '); scanf('%d%d', &atai1, &atai2); printf('%s\n', StrAdd(atai1, atai2)); return 0; } /* 加算関数 */ char *StrAdd(int atai1, int atai2) { static char buff[100]; sprintf(buff, '%d + %d = %d', atai1, atai2, atai1 + atai2); return buff; }
例の実行結果
$ ./sprintf.exe 2つの整数を入力してください ==> 10 20 10 + 20 = 30 $ $ ./sprintf.exe 2つの整数を入力してください ==> 20 10 20 + 10 = 30 $ $ ./sprintf.exe 2つの整数を入力してください ==> -10 10 -10 + 10 = 0 $